package com.sunrise.generico.entidade;

import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;

import lombok.Getter;
import lombok.Setter;

import com.sunrise.generico.entidade.iface.EntidadeNegocio;
import com.sunrise.generico.enums.StatusMovimentacao;
import com.sunrise.generico.enums.TipoMovimentacao;

@Entity
@Table(name = "movimentacao_produto")
public class MovimentacaoProduto implements EntidadeNegocio {


	/**
	 * 
	 */
	private static final long serialVersionUID = -1381357487129767374L;

	@Id
	@SequenceGenerator(name="pk_sequence",sequenceName="movimentacao_estoque_id_seq", allocationSize=1)
	@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="pk_sequence")
	@javax.persistence.Column
	@Getter @Setter
	private Long id;
	
	@OneToOne
	@Getter @Setter
	private Produto produto;
	
	@ManyToOne
	@Getter @Setter
	private Unidade unCom;
	
	@ManyToOne
	@Getter @Setter
	private Unidade unTrib;
	
	@ManyToOne
	@Getter @Setter
	private MovimentacaoEstoque movimentacaoEstoque;
	
	@Column(name = "qtCom", nullable = false)
	@Getter @Setter
	private BigDecimal qtCom;
	
	@Column(name = "qtTrib", nullable = false)
	@Getter @Setter
	private BigDecimal qtTrib;
	
	@Column(name = "valorFrete")
	@Getter @Setter
	private BigDecimal valorFrete;
	
	@Column(name = "valorProduto")
	@Getter @Setter
	private BigDecimal valorProduto;
	
	@Column(name = "valorDesconto")
	@Getter @Setter
	private BigDecimal valorDesconto;
	
	@Column(name = "valorDespesas")
	@Getter @Setter
	private BigDecimal valorDespesas;
	
	@Column(name = "valorSeguro")
	@Getter @Setter
	private BigDecimal valorSeguro;
	
	@Column(name = "valorUnCom")
	@Getter @Setter
	private BigDecimal valorUnCom;
	
	@Column(name = "valorUnTrib")
	@Getter @Setter
	private BigDecimal valorUnTrib;
	
	@Transient
	@Getter @Setter
	private BigDecimal lucro;
	
	@Enumerated(EnumType.STRING)
	@Getter @Setter
	private TipoMovimentacao tipoMovimentacao;
	
	@Enumerated(EnumType.STRING)
	@Getter
	@Setter
	private StatusMovimentacao statusMovimentacao;
	
	
	
}
